home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48hor1 / cflow.src < prev    next >
Text File  |  1991-05-29  |  2KB  |  81 lines

  1. %%HP: T(3)F(.); @ 'CFLOW' BYTES  ==>  #8961h  1175.5
  2. @ CFLOW, by Ted A Smith
  3. DIR
  4.   Total
  5.     \<< 1 \GSGet 2 \GSGet DOT
  6.     \>>
  7.   NPV
  8.     \<<
  9.       IF
  10.         I
  11.       THEN
  12.         CFEval DROP
  13.       ELSE
  14.         Total
  15.       END
  16.     \>>
  17.   NUS
  18.     \<<
  19.       IF
  20.         I
  21.       THEN
  22.         CFEval EXPM NEG / I * 100 /
  23.       ELSE
  24.         1 \GSGet 2 \GSGet \-> v c
  25.         \<< v c DOT c c 1 CON DOT 1 - / \>>
  26.       END
  27.     \>>
  28.   NFV
  29.     \<<
  30.       IF
  31.         I
  32.       THEN
  33.         CFEval EXP /
  34.       ELSE
  35.         Total
  36.       END
  37.     \>>
  38.   IRR
  39.     \<<
  40.       \<< NPV \>> 'I'
  41.       IFERR
  42.         DUP RCL
  43.       THEN
  44.         DROP 0
  45.       END
  46.       ROOT
  47.     \>>
  48.   CFEval
  49.     \<< I 100 / DUP LNP1 NEG \-> i lni
  50.       \<< \GSGet2 OBJ\-> 1 GET 2 * 2 + \-> s
  51.         \<< -1 0 s 4
  52.           FOR j
  53.             j ROLL j ROLL \-> n t v r
  54.               \<< r n + lni r * EXPM lni n * EXP * v * t + \>>
  55.             -2
  56.           STEP
  57.           i / NEG SWAP lni *
  58.         \>>
  59.       \>>
  60.     \>>
  61.   \GSGet2
  62.     \<< 1 PREDV DROP
  63.       \GSDAT DUP SIZE 1 2 PUT 0 CON
  64.       { 1 '\GSPAR (1)' } 1 PUT
  65.       { 2 ' \GSPAR(2)' } 1 PUT
  66.       TRN *
  67.     \>>
  68.   \GSGet
  69.     \<< 1 PREDV DROP
  70.       \GSDAT DUP SIZE 2 2 SUB 0 CON
  71.       \GSPAR 4 ROLL GET 1 PUT *
  72.     \>>
  73.   CST { { "Total" \<< Total "Total" \->TAG \>> }
  74.         { "I"     { \<< 'I' STO 'I' RCL "I" \->TAG \>>
  75.                     \<< IRR "IRR" \->TAG \>>
  76.                     \<< IFERR 'I' RCL THEN DROP IRR END "I" \->TAG \>> } }
  77.         { "NPV"   \<< NPV "NPV" \->TAG \>> }
  78.         { "NUS"   \<< NUS "NUS" \->TAG \>> }
  79.         { "NFV"   \<< NFV "NFV" \->TAG \>> } }
  80. END
  81.